import { ref } from 'vue'

const user = ref({
  loggedIn: false,
  username: '',
  phone: '',
  avatar: '',
  school: null,
  roles: []
});
const token = ref('');

// 从 localStorage 中读取用户信息
const storedUser = localStorage.getItem('user');
if (storedUser) {
  const parsedUser = JSON.parse(storedUser);
  const now = new Date();
  if (new Date(parsedUser.expiration) > now) {
    user.value = parsedUser; // 如果未过期，设置用户信息
  } else {
    localStorage.removeItem('user'); // 如果过期，清除用户信息
  }
}

export function useStore () {
  return {
    user,
    token,
    setUser (newUser) {
      user.value = {
        ...newUser,
        loggedIn: true,
        roles: newUser.roles || [] // 确保roles是数组
      };
      const expirationDate = new Date();
      expirationDate.setMonth(expirationDate.getMonth() + 1); // 设置过期时间为一个月后
      localStorage.setItem('user', JSON.stringify({ ...user.value, expiration: expirationDate }));
    },
    setToken (newToken) {
      token.value = newToken;
      // 将 token 存储到 localStorage
      localStorage.setItem('token', newToken);
    },
    async login (phone, password) {
      // 这里可以调用 API 登录
    },
    async register (username, password, phone) {
      // 这里可以调用 API 注册
    },
    logout () {
      user.value = {
        loggedIn: false,
        username: '',
        phone: '',
        avatar: '',
        school: null,
        roles: []
      };
      // 清除 localStorage 中的用户信息
      localStorage.removeItem('user');
      localStorage.removeItem('token');
    },
    // 添加判断用户是否有管理员角色的方法
    hasAdminRole () {
      if (!user.value || !user.value.roles || !Array.isArray(user.value.roles)) {
        return false;
      }
      // 添加对错误拼写"stystemAdmin"的支持
      const adminRoles = ['clubAdmin', 'schoolAdmin', 'systemAdmin', 'stystemAdmin'];
      return user.value.roles.some(role => adminRoles.includes(role));
    }
  };
}
